home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / T-TPUG Old Monthly Disks / (c)tn.d64 / bal. checkbook.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  8KB  |  267 lines

  1. 10 REM  *************************
  2. 20 REM  *** BALANCE CHECKBOOK ***
  3. 30 REM  *************************
  4. 40 REM
  5. 50 REM
  6. 60 REM      COPYRIGHT(C) 1985
  7. 70 REM      KENT M. BRIDWELL
  8. 80 REM
  9. 90 REM
  10. 100 CLR:RESTORE:POKE53280,0:POKE53281,0:GOSUB210:PRINT"[156]OPTIONS:"
  11. 110 PRINTTAB(4)"[155](B) [154]- BALANCE CHECKBOOK"
  12. 120 PRINTTAB(4)"[155](V) [154]- VERIFY CHECKBOOK REGISTER"
  13. 130 PRINT"      [158]<PRESS LETTER KEY>":POKE198,0
  14. 140 GETK$:IFK$=""THEN140
  15. 150 IFK$="B"THENGOSUB210:GOTO270
  16. 160 IFK$="V"THEN1220
  17. 170 GOTO140
  18. 180 REM
  19. 190 REM ------ TITLE HEADER ------
  20. 200 REM
  21. 210 PRINT"[147][153]"TAB(10)"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]"
  22. 220 PRINTTAB(10)"[153][221][155]BALANCE CHECKBOOK[153][221]"
  23. 230 PRINTTAB(10)"[153][173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]":RETURN
  24. 240 REM
  25. 250 REM ------- INFORMATION -------
  26. 260 REM
  27. 270 CLR:RESTORE:DIMCK$(500),CA$(500),SD$(50),DA$(50)
  28. 280 Q$=CHR$(34):TB$=CHR$(16):C1=0:C2=0
  29. 290 DT$="":INPUT"[156]STATEMENT DATE[154]";DT$:IFDT$=""THENPRINT"[145][145][145]":GOTO290
  30. 300 PRINT"[156]BALANCE ACCORDING TO CHECKBOOK REGISTER"
  31. 310 CR$="":INPUT"    [154]";CR$
  32. 320 IFCR$=""THENPRINT"[145][145]":GOTO310
  33. 330 BA$="":INPUT"[156]NEW BALANCE PER STATEMENT[154]";BA$
  34. 340 IFBA$=""THENPRINT"[145][145][145]":GOTO330
  35. 350 GOSUB210:PRINT"[156]ARE THERE ANY CHECKS OUTSTANDING WHICH"
  36. 360 PRINT"HAVE NOT YET CLEARED?[160]([155]Y/N[156])":POKE198,0
  37. 370 GETK1$:IFK1$<>"Y"ANDK1$<>"N"THEN370
  38. 380 IFK1$="Y"THENGOSUB410
  39. 390 GOTO570:REM ---> INFO CONT'D
  40. 400 REM
  41. 410 REM ---- OUTSTANDING CHECKS ----
  42. 420 REM
  43. 430 PRINT"[129]FOR EACH OUTSTANDING CHECK, ENTER (WHEN"
  44. 440 PRINT"REQUESTED) THE CHECK NUMBER AND AMOUNT."
  45. 450 PRINT"AFTER THE LAST CHECK HAS BEEN LISTED, "
  46. 460 PRINT"ENTER ";Q$;"*";Q$;" [129]TO EXIT."
  47. 470 INPUT"  [152]PRESS <[155]RETURN[152]> WHEN READY TO START[144]";K:C1=1
  48. 480 GOSUB210:PRINT"[154]          (ENTER [155]";Q$;"*";Q$;" [154]TO EXIT)"
  49. 490 CK$(C1)="":INPUT"[129]CHECK NUMBER[155]";CK$(C1)
  50. 500 IFCK$(C1)=""THENPRINT"[145][145][145]":GOTO490
  51. 510 IFCK$(C1)="*"THENC1=C1-1:GOTO590
  52. 520 CA$(C1)="":INPUT"[129]CHECK AMOUNT[155]";CA$(C1)
  53. 530 IFCA$(C1)=""THENPRINT"[145][145][145]":GOTO520
  54. 540 IFCA$(C1)="*"THENC1=C1-1:RETURN
  55. 550 C1=C1+1:GOTO480
  56. 560 REM
  57. 570 REM ----- INFORMATION CONT'D -----
  58. 580 REM
  59. 590 GOSUB210:PRINT"[156]ARE THERE ANY DEPOSITS WHICH HAVE NOT "
  60. 600 PRINT"BEEN POSTED YET?[160]([155]Y/N[156])":POKE198,0
  61. 610 GETK2$:IFK2$<>"Y"ANDK2$<>"N"THEN610
  62. 620 IFK2$="Y"THENGOSUB650
  63. 630 GOTO830:REM ---> CALCULATIONS
  64. 640 REM
  65. 650 REM ----- UNPOSTED DEPOSITS -----
  66. 660 REM
  67. 670 PRINT"[129]FOR EACH UNPOSTED DEPOSIT, ENTER (WHEN"
  68. 680 PRINT"REQUESTED) THE SOURCE AND AMOUNT."
  69. 690 PRINT"AFTER THE LAST DEPOSIT HAS BEEN LISTED,"
  70. 700 PRINT"ENTER ";Q$;"*";Q$;" [129]TO EXIT."
  71. 710 INPUT"  [152]PRESS <[155]RETURN[152]> WHEN READY TO START[144]";K:C2=1
  72. 720 GOSUB210:PRINT"[154]          (ENTER [155]";Q$;"*";Q$;" [154]TO EXIT)"
  73. 730 PRINT"[129](16 CHARACTERS MAXIMUM)[145][145]"
  74. 740 SD$(C2)="":INPUT"SOURCE[155]";SD$(C2)
  75. 750 IFLEN(SD$(C2))>16THENPRINT"   ** TOO LONG! **":FORT=1TO1000:NEXTT:GOTO720
  76. 760 IFSD$(C2)=""THENSD$(C2)="<NO ENTRY>"
  77. 770 IFSD$(C2)="*"THENC2=C2-1:GOTO850
  78. 780 DA$(C2)="":INPUT"[129]DEPOSIT AMOUNT[155]";DA$(C2)
  79. 790 IFDA$(C2)=""THENPRINT"[145][145][145]":GOTO780
  80. 800 IFDA$(C2)="*"THENC2=C2-1:RETURN
  81. 810 C2=C2+1:GOTO720
  82. 820 REM
  83. 830 REM ------ CALCULATIONS ------
  84. 840 REM
  85. 850 GOSUB210:PRINT"[154]      * * *  NOW COMPUTING  * * *"
  86. 860 CK=0:FORI=1TOC1
  87. 870 CK=CK+VAL(CA$(I)):NEXTI
  88. 880 DP=0:FORI=1TOC2
  89. 890 DP=DP+VAL(DA$(I)):NEXTI
  90. 900 BA=(INT((VAL(BA$)+DP-CK)*100+.5))/100
  91. 910 CR=(INT(VAL(CR$)*100+.5))/100:IFBA=CRTHEN1430:REM ---> BALANCED!
  92. 920 REM
  93. 930 REM ------ NOT BALANCED! ------
  94. 940 REM
  95. 950 PRINT"[145][156] [210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210]"
  96. 960 PRINT"[159] BAD NEWS! - THE FIGURES DO NOT BALANCE"
  97. 970 PRINT"[156] [197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197]"
  98. 980 PRINT"[129] BALANCE FROM STATEMENT:"
  99. 990 PRINT"[158]     BEFORE ADJUSTMENTS>[155] $";(INT(VAL(BA$)*100+.5))/100
  100. 1000 PRINT"[152]      AFTER ADJUSTMENTS>[155] $";BA
  101. 1010 PRINT"[153] BALANCE FROM CHECKBOOK>[155] $";CR
  102. 1020 PRINT"                        [155][192][192][192][192][192][192][192][192][192][192][133]"
  103. 1030 PRINT"[154]         NET DIFFERENCE: [155]$";(INT(ABS(BA-CR)*100+.5))/100
  104. 1040 INPUT" [152]PRESS <[155]RETURN[152]> TO SEE PRESENT OPTIONS[144]";K$
  105. 1050 REM
  106. 1060 REM ----- OPTIONS MENU -----
  107. 1070 REM
  108. 1080 GOSUB210:PRINT"[154]CHOICES:"
  109. 1090 PRINTTAB(4)"[156]([155]1[156]) TRY AGAIN TO BALANCE"
  110. 1100 PRINTTAB(4)"[156]([155]2[156]) REVIEW/CORRECT ENTRIES"
  111. 1110 PRINTTAB(4)"[156]([155]3[156]) VERIFY CHECKBOOK ENTRIES"
  112. 1120 PRINTTAB(4)"[156]([155]4[156]) GIVE UP FOR NOW":POKE198,0
  113. 1130 GETK$:IFK$=""THEN1130
  114. 1140 IFK$="1"THENGOSUB210:GOTO270
  115. 1150 IFK$="2"THEN1820
  116. 1160 IFK$="3"THEN1220
  117. 1170 IFK$="4"THENGOSUB210:PRINT"[129]FINI![154]":FORT=1TO2000:NEXT:SYS65126
  118. 1180 GOTO1130
  119. 1190 REM
  120. 1200 REM --- VERIFY CHECK REGISTER ---
  121. 1210 REM
  122. 1220 GOSUB210:PRINT"[154]   *** VERIFY CHECKBOOK ENTRIES ***"
  123. 1230 PRINT"[152](TO ENTER A DEPOSIT, PRESS <RETURN> TO"
  124. 1240 PRINT"SKIP CHECK INPUT.)"
  125. 1250 INPUT"[156]BALANCE AT LAST STATEMENT[155]";BB
  126. 1260 PRINT"[152]----------------<[155]START[152]>-----------------"
  127. 1270 PRINT"[153]BALANCE FORWARD: $";BB
  128. 1280 PRINT"[158]       (ENTER ";Q$;"*";Q$;" [158]TO EXIT)"
  129. 1290 CK$="0":DP$="0":INPUT"[145][145][145][145][145][145][129]TRANSACTION: [155]CHECK AMOUNT[158]";CK$
  130. 1300 IFCK$="*"THEN1370
  131. 1310 IFVAL(CK$)>0THEN1340
  132. 1320 INPUT"           [155]DEPOSIT AMOUNT[158]";DP$
  133. 1330 IFDP$="*"THEN1370
  134. 1340 BB=BB+VAL(DP$)-VAL(CK$)
  135. 1350 PRINTTAB(15)"[153]NEW BALANCE: [155]$";(INT(BB*100+.5))/100
  136. 1360 PRINT"[152]----------------------------------------":GOTO1290
  137. 1370 GOSUB210:PRINT"[154]VERIFIED CHECKBOOK BALANCE = [155]$";BB
  138. 1380 PRINT"[156]CHOICES:"
  139. 1390 PRINTTAB(4)"[156]([155]1[156]) TRY TO BALANCE CHECKBOOK":GOTO1100
  140. 1400 REM
  141. 1410 REM -------- BALANCED! --------
  142. 1420 REM
  143. 1430 PRINT"[145][153]      >>> CHECKBOOK BALANCED! [153]<<<        "
  144. 1440 PRINT"[154]YOUR CURRENT":PRINT"ADJUSTED BALANCE.......[155]$";(INT(BA*100+.5))/100
  145. 1450 PRINT"[129]DO YOU WANT A PRINTOUT? ([155]Y/N[129])":POKE198,0
  146. 1460 GETK$:IFK$<>"Y"ANDK$<>"N"THEN1460
  147. 1470 GOSUB210
  148. 1480 IFK$="N"THENPRINT"[129]FINI![154]":FORT=1TO2000:NEXT:SYS65126
  149. 1490 REM
  150. 1500 REM -------- PRINTOUT --------
  151. 1510 REM
  152. 1520 PRINT"[154]BE SURE THAT PRINTER IS SET UP PROPERLY."
  153. 1530 INPUT"PRESS <[155]RETURN[154]> WHEN READY.[144]";K
  154. 1540 PRINT"[150]       >>> PRINTER ACTIVATED! <<<"
  155. 1550 OPEN4,4:PRINT#4:PRINT#4
  156. 1560 PRINT#4,CHR$(14)" * *  CHECKBOOK BALANCE  * *"
  157. 1570 PRINT#4,CHR$(15):PRINT#4,"STATEMENT DATED ";DT$:PRINT#4
  158. 1580 H%=INT(C1/2)
  159. 1590 IFC1=0THENPRINT#4,"(NO CHECKS OUTSTANDING)":GOTO1670
  160. 1600 PRINT#4,"CHECKS OUTSTANDING":PRINT#4,"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]"
  161. 1610 FORI=1TOH%
  162. 1620 PRINT#4,"#";CK$(I);TB$;"08$"+CA$(I);
  163. 1630 PRINT#4,TB$;"25#"+CK$(I+H%);TB$;"33$"+CA$(I+H%)
  164. 1640 NEXTI:I=I-1
  165. 1650 IFI+H%<C1THENPRINT#4,TB$;"25#"+CK$(C1);TB$;"33$"+CA$(C1)
  166. 1660 PRINT#4:PRINT#4,TB$;"10TOTAL: $"CK
  167. 1670 PRINT#4:PRINT#4:IFC2=0THENPRINT#4,"(NO UNPOSTED DEPOSITS)":GOTO1730
  168. 1680 PRINT#4,"DEPOSITS NOT POSTED":PRINT#4,"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]"
  169. 1690 FORI=1TOC2
  170. 1700 PRINT#4,"   $";DA$(I);TB$;"16>"SD$(I)
  171. 1710 NEXTI
  172. 1720 PRINT#4:PRINT#4,TB$;"10TOTAL: $"DP
  173. 1730 PRINT#4,CHR$(14):PRINT#4,"    >> NEW BALANCE = $";BA
  174. 1740 PRINT#4,CHR$(15):PRINT#4:CLOSE4
  175. 1750 GOSUB210:PRINT"[159]OPTIONS:"
  176. 1760 PRINTTAB(4)"[154]<[155]R[154]> - [152]RUN AGAIN"
  177. 1770 PRINTTAB(4)"[154]<[155]E[154]> - [152]EXIT/END":POKE198,0
  178. 1780 GETK$:IFK$<>"R"ANDK$<>"E"THEN1780
  179. 1790 IFK$="R"THENRUN
  180. 1800 K$="4":GOTO1170
  181. 1810 REM
  182. 1820 REM --- REVIEW/CORRECT ENTRIES ---
  183. 1830 REM
  184. 1840 PRINT"[147]"TAB(8)"[156][176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]"
  185. 1850 PRINTTAB(8)"[221][155]REVIEW/CORRECT ENTRIES[156][221]"
  186. 1860 PRINTTAB(8)"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]"
  187. 1870 REM  ---- <<< CHECKS >>> ----
  188. 1880 IFC1>0THEN1960
  189. 1890 PRINT"[129]CHECKS OUTSTANDING:[158] THERE ARE NO CHECKS"
  190. 1900 PRINT"REPORTED OUTSTANDING.  DO YOU NOW WISH"
  191. 1910 PRINT"TO ADD ANY? [129]([155]Y/N[129])":POKE198,0
  192. 1920 GETK1$:IFK1$<>"Y"ANDK1$<>"N"THEN1920
  193. 1930 IFK1$="N"THEN2210
  194. 1940 GOSUB410:REM ---> CHECK INPUTS
  195. 1950 GOTO2210
  196. 1960 PRINT"[158]REVIEW OUTSTANDING CHECKS":AF=0:V1=1:V2=C1
  197. 1970 FORI=V1TOV2:PRINT"[153]---------------------------------------"
  198. 1980 PRINT"[129]CHECK NUMBER [155]";CK$(I)
  199. 1990 PRINT"[129]CHECK AMOUNT [155]$";CA$(I)
  200. 2000 GOSUB2550
  201. 2010 IFX$="1"THEN2150
  202. 2020 IFX$="2"THENGOSUB2070:GOTO2150
  203. 2030 IFX$="3"THENGOSUB2110:GOTO2150
  204. 2040 REM ----- (CHANGE ENTRY) -----
  205. 2050 INPUT"  [156]CHECK NUMBER[158]";CK$(I)
  206. 2060 INPUT"  [156]CHECK AMOUNT[158]";CA$(I):GOTO2150
  207. 2070 REM ----- (DELETE CHECK) -----
  208. 2080 FORJ=ITOC1-1:CK$(J)=CK$(J+1):CA$(J)=CA$(J+1):NEXT
  209. 2090 C1=C1-1:IFC1<0THENC1=0:I=V2
  210. 2100 RETURN
  211. 2110 REM ----- (ADD CHECK) -----
  212. 2120 C1=C1+1:FORJ=C1TO(I+1)STEP-1:CK$(J)=CK$(J-1):CA$(J)=CA$(J-1):NEXTJ
  213. 2130 INPUT"  [156]CHECK NUMBER[158]";CK$(I)
  214. 2140 INPUT"  [156]CHECK AMOUNT[158]";CA$(I):AF=1:RETURN
  215. 2150 NEXTI
  216. 2160 IFAF=1THENV1=I:V2=C1:AF=0:GOTO1970
  217. 2170 PRINT"[159]>> [154]ADD ONE AT END? ([155]Y/N[154])":POKE198,0
  218. 2180 GETK$:IFK$<>"Y"ANDK$<>"N"THEN2180
  219. 2190 IFK$="N"THEN2210
  220. 2200 C1=C1+1:I=C1:GOSUB2130
  221. 2210 REM ---- <<< DEPOSITS >>> ----
  222. 2220 IFC2>0THEN2290
  223. 2230 PRINT"[147][129]UNPOSTED DEPOSITS:[158] THERE ARE NO DEPOSITS";
  224. 2240 PRINT"REPORTED UNPOSTED.  DO YOU NOW WISH TO"
  225. 2250 PRINT"ADD ANY? [129]([155]Y/N[129])":POKE198,0
  226. 2260 GETK2$:IFK2$<>"Y"ANDK2$<>"N"THEN2260
  227. 2270 IFK2$="N"THEN830:REM ---> CALC
  228. 2280 GOSUB650:GOTO830:REM ---> DEPOSIT INPUTS
  229. 2290 PRINT"[158]REVIEW UNPOSTED DEPOSITS":AF=0:V1=1:V2=C2
  230. 2300 FORI=V1TOV2:PRINT"[153]---------------------------------------"
  231. 2310 PRINT"[129]DEPOSIT SOURCE [155]";SD$(I)
  232. 2320 PRINT"[129]DEPOSIT AMOUNT [155]$";DA$(I)
  233. 2330 GOSUB2550
  234. 2340 IFX$="1"THEN2470
  235. 2350 IFX$="2"THENGOSUB2390:GOTO2470
  236. 2360 REM ----- (CHANGE ENTRY) -----
  237. 2370 INPUT"  [156]SOURCE[158]";SD$(I)
  238. 2380 INPUT"  [156]AMOUNT[158]";DA$(I):GOTO2470
  239. 2390 REM ----- (DELETE DEPOSIT) -----
  240. 2400 FORJ=ITOC2-1:SD$(J)=SD$(J+1):DA$(J)=DA$(J+1):NEXT
  241. 2410 C2=C2-1:IFC2<0THENC2=0:I=V2
  242. 2420 RETURN
  243. 2430 REM ----- (ADD DEPOSIT) -----
  244. 2440 C2=C2+1:FORJ=C2TO(I+1)STEP-1:SD$(J)=SD$(J-1):DA$(J)=DA$(J-1):NEXT
  245. 2450 INPUT"  [156]SOURCE[158]";SD$(I)
  246. 2460 INPUT"  [156]AMOUNT[158]";DA$(I):AF=1:RETURN
  247. 2470 NEXTI
  248. 2480 IFAF=1THENV1=I:V2=C1:AF=0:GOTO2300
  249. 2490 PRINT"[159]>> [154]ADD ONE AT END? ([155]Y/N[154])":POKE198,0
  250. 2500 GETK$:IFK$<>"Y"ANDK$<>"N"THEN2500
  251. 2510 IFK$="N"THEN2530
  252. 2520 C2=C2+1:I=C2:GOSUB2450
  253. 2530 GOTO830:REM ---> CALCULATIONS
  254. 2540 REM
  255. 2550 REM ------ REVIEW OPTIONS ------
  256. 2560 REM
  257. 2570 PRINT"[154]CHOOSE OPTION:"
  258. 2580 PRINTTAB(4)"[159]1 [152]NO CHANGE [154]<[155]RETURN [154]KEY>"
  259. 2590 PRINTTAB(4)"[159]2 [152]DELETE"
  260. 2600 PRINTTAB(4)"[159]3 [152]ADD ITEM (WILL PRECEDE THIS ONE)"
  261. 2610 PRINTTAB(4)"[159]4 [152]CORRECTION":POKE198,0
  262. 2620 GETX$:IFX$<>"1"ANDX$<>"2"ANDX$<>"3"ANDX$<>"4"ANDX$<>CHR$(13)THEN2620
  263. 2630 IFX$=CHR$(13)THENX$="1"
  264. 2640 RETURN
  265. 59999 END
  266. 60000 OPEN15,8,15,"S0:BAL. CHECKBOOK":CLOSE15:SAVE"0:BAL. CHECKBOOK",8
  267.